package com.ly.gen.entity;

import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * 系统数据库表
 *
 * @author luoyun
 * @Date: 2025-06-16
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("gen_data_table")
@Schema(description = "系统数据库表")
public class GenDataTable implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(type = IdType.ASSIGN_ID)
    @ExcelProperty("主键")
    @Schema(description = "主键")
    private java.lang.String id;
    /**
     * 数据库目录名（通常为"def"）
     */
    @ExcelProperty("数据库目录名")
    @Schema(description = "数据库目录名")
    private java.lang.String tableCatalog;
    /**
     * 数据库名（Schema名称）
     */
    @ExcelProperty("数据库名（Schema名称）")
    @Schema(description = "数据库名（Schema名称）")
    private java.lang.String tableSchema;
    /**
     * 表名
     */
    @ExcelProperty("表名")
    @Schema(description = "表名")
    private java.lang.String tableName;

    /**
     * 同步状态（0未同步 1已同步）
     */
    @ExcelProperty("同步状态（0未同步 1已同步）")
    @Schema(description = "同步状态（0未同步 1已同步）")
    private java.lang.String status;
    /**
     * 表类型（BASE TABLE 或 VIEW）
     */
    @ExcelProperty("表类型（BASE TABLE 或 VIEW）")
    @Schema(description = "表类型（BASE TABLE 或 VIEW）")
    private java.lang.String tableType;
    /**
     * 存储引擎（如InnoDB、MyISAM等）
     */
    @ExcelProperty("存储引擎（如InnoDB、MyISAM等）")
    @Schema(description = "存储引擎（如InnoDB、MyISAM等）")
    private java.lang.String engine;
    /**
     * 表版本
     */
    @ExcelProperty("表版本")
    @Schema(description = "表版本")
    private java.lang.Integer version;
    /**
     * 行存储格式（如Dynamic、Compact等）
     */
    @ExcelProperty("行存储格式（如Dynamic、Compact等）")
    @Schema(description = "行存储格式（如Dynamic、Compact等）")
    private java.lang.String rowFormat;
    /**
     * 表行数估算
     */
    @ExcelProperty("表行数估算")
    @Schema(description = "表行数估算")
    private java.lang.Long tableRows;
    /**
     * 平均行长度
     */
    @ExcelProperty("平均行长度")
    @Schema(description = "平均行长度")
    private java.lang.Long avgRowLength;
    /**
     * 数据总字节数
     */
    @ExcelProperty("数据总字节数")
    @Schema(description = "数据总字节数")
    private java.lang.Long dataLength;
    /**
     * 数据允许最大字节数
     */
    @ExcelProperty("数据允许最大字节数")
    @Schema(description = "数据允许最大字节数")
    private java.lang.Long maxDataLength;
    /**
     * 索引总字节数
     */
    @ExcelProperty("索引总字节数")
    @Schema(description = "索引总字节数")
    private java.lang.Long indexLength;
    /**
     * 未使用的空间
     */
    @ExcelProperty("未使用的空间")
    @Schema(description = "未使用的空间")
    private java.lang.Long dataFree;
    /**
     * 下一个自增值
     */
    @ExcelProperty("下一个自增值")
    @Schema(description = "下一个自增值")
    private java.lang.Long autoIncrement;
    /**
     * 最后检查时间
     */
    @ExcelProperty("最后检查时间")
    @Schema(description = "最后检查时间")
    private java.time.LocalDateTime checkTime;
    /**
     * 字符集排序规则
     */
    @ExcelProperty("字符集排序规则")
    @Schema(description = "字符集排序规则")
    private java.lang.String tableCollation;
    /**
     * 校验和
     */
    @ExcelProperty("校验和")
    @Schema(description = "校验和")
    private java.lang.Integer checksum;
    /**
     * 额外选项
     */
    @ExcelProperty("额外选项")
    @Schema(description = "额外选项")
    private java.lang.String createOptions;
    /**
     * 表说明
     */
    @ExcelProperty("表说明")
    @Schema(description = "表说明")
    private java.lang.String tableComment;
    /**
     * 列表达式
     */
    @ExcelProperty("列表达式")
    @Schema(description = "列表达式")
    private java.lang.Object generationExpression;
    /**
     * 加密类型
     */
    @ExcelProperty("加密类型")
    @Schema(description = "加密类型")
    private java.lang.String encryptionType;

    /**
     * 排序
     */
    @ExcelProperty("排序")
    @Schema(description = "排序")
    private java.lang.Integer displayOrder;
    /**
     * 创建人
     */
    @ExcelProperty("创建人")
    @Schema(description = "创建人")
    private java.lang.String createBy;
    /**
     * 创建时间
     */
    @ExcelProperty("创建时间")
    @Schema(description = "创建时间")
    private java.time.LocalDateTime createTime;
    /**
     * 修改人
     */
    @ExcelProperty("修改人")
    @Schema(description = "修改人")
    private java.lang.String updateBy;
    /**
     * 修改时间
     */
    @ExcelProperty("修改时间")
    @Schema(description = "修改时间")
    private java.time.LocalDateTime updateTime;
}
